iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
AI & Data

YOLO系列網路技術採用以及實作系列 第 22

[DAY 22] YOLOv3、YOLOv4模型訓練

  • 分享至 

  • xImage
  •  

小前言

延續上一篇文章的步驟,目前還有obj.data檔案以及模型的cfg檔要進行設定,這邊要說明一下先前下載的yolov3.weight以及yolov4.weight是用來測試的權重檔,若是要下載用來訓練yolov3模型的預訓練權重檔為darknet53.conv.74以及yolov4.conv.137

訓練前的其他前置作業:

  1. 在cfg資料夾中創立一個名稱為weights的資料夾用於存放訓練過程中的模型權重檔。
  2. obj.data檔案設定
    開啟檔案並將內容設定為以下內容:
    #目標辨識類別的數量
    classes = 4
    #訓練集以及測試集的list txt檔案位置
    train = cfg/train.txt
    valid = cfg/valid.txt
    #類別名稱檔案位置
    names = cfg/obj.names
    #權重檔的儲存路徑
    backup = cfg/weights
    
  3. 先前從網路上下載的darknet53.conv.74以及yolov4.conv.137權重檔放置於cfg資料夾當中。
  4. 從cfg_origin資料夾中複製yolov3.cfg模型檔案以及yolov4-custom.cfg模型檔案到cfg資料夾中。
  5. 開啟cfg資料夾中的yolov3.cfg檔案以及yolov4-custom.cfg檔案:
    • 會發現兩者的模型檔案都會有三個[yolo]在裡面,需要將每個[yolo]上方的filters數量都進行修改
      • 修改的內容為filters=(classes + 5) * 3 ,因為我們要檢測的類別為4類,所以filters數量=(4+5)*3=27。

        https://ithelp.ithome.com.tw/upload/images/20231007/20120310BG2T5O3ixk.png

    • 也會看到classes:文件內容當中的全部classes數量也要進行修改,都設成資料集辨識類別數量(4)。
      https://ithelp.ithome.com.tw/upload/images/20231007/20120310gIOUFHz6qI.png
  • 此時的cfg資料夾中的存放資料示意圖為:
    https://ithelp.ithome.com.tw/upload/images/20231007/20120310YZN3K4ZMEY.png

完成上述作業後,訓練前的前置作業就大功告成了。

訓練階段

  1. 開啟終端機terminal,並cd進到darknet_master(darknet)資料夾中。
  2. yolov3的模型訓練指令:
    darknet.exe detector train .\cfg\obj.data .\cfg\yolov3.cfg cfg\darknet53.conv.74
    
  3. yolov4的模型訓練指令:
    darknet.exe detector train .\cfg\obj.data .\cfg\yolov4-custom.cfg cfg\yolov4.conv.137
    
  • 執行後有看到以下畫面就代表已成功進行模型訓練
    https://ithelp.ithome.com.tw/upload/images/20231007/20120310iSIAcHmK6B.png
    • 左側是顯示出目前訓練到第幾個epochs,loss目前多少,右側的圖會繪出loss的收斂曲線。

可能會遇到的問題:

  • out of memory:

    https://ithelp.ithome.com.tw/upload/images/20231007/201203108Z3Xu1sLSA.png

    • 原因:可能影像無法按照設定的batch數將batch影像匯入到顯卡記憶體當中。

    • 解決辦法: 以yolov4為例,訓練yolov4時出現out of memory錯誤時,開啟cfg資料夾中的yolov4-custom.cfg檔案,將文件最上方training的batch以及subdivisions值,改成小一點的數字,或是調整輸入影像大小。

      https://ithelp.ithome.com.tw/upload/images/20231007/20120310CNkUYvfp3R.png

本篇文章已經成功能將yolov3以及yolov4成功使用筆電GPU執行訓練,各位讀者也可以參照上述方法完成模型訓練。

這邊目前我臨時採用筆電進行訓練,模型訓練過程會使電腦發燙,為了避免筆電過熱受損,只演示能成功進行訓練的步驟,沒有讓訓練跑到底,後續回到宿舍後,會利用散熱效果較好的桌上型電腦進行訓練,並在最後的幾篇文章中,統一將每一代的YOLO訓練結果數據進行展示。


上一篇
[DAY 21] YOLOv3、YOLOv4訓練自己的資料集
下一篇
[DAY 23] YOLOv5模型訓練
系列文
YOLO系列網路技術採用以及實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言